System.Collections.ObjectModel.ObservableCollection<T> – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Třída ObservableCollection<T> představuje dynamickou kolekci dat, která poskytuje oznámení při přidání nebo odebrání položek nebo při aktualizaci celého seznamu.

V mnoha případech jsou data, se kterými pracujete, kolekcí objektů. Běžným scénářem datové vazby je například použití ItemsControlListBoxtypu , ListViewnebo TreeView zobrazení kolekce záznamů.

Můžete vytvořit výčet všech kolekcí, které implementují rozhraní IEnumerable. Pokud ale chcete nastavit dynamické vazby tak, aby vložení nebo odstranění v kolekci automaticky aktualizovalo uživatelské rozhraní, musí kolekce implementovat rozhraní INotifyCollectionChanged. Toto rozhraní zveřejňuje CollectionChanged událost, což je událost, která by měla být vyvolána při každé změně podkladové kolekce.

Třída ObservableCollection<T> je typ shromažďování dat, který implementuje INotifyCollectionChanged rozhraní.

Před implementací vlastní kolekce zvažte použití ObservableCollection<T> nebo některé ze stávajících tříd kolekcí, například List<T>, Collection<T>, BindingList<T> a dalších. Pokud máte pokročilý scénář a chcete implementovat vlastní kolekci, zvažte použití IList, která poskytuje ne generickou kolekci objektů, ke kterým lze individuálně přistupovat pomocí indexu. Implementace IList poskytuje nejlepší výkon s modulem datových vazeb.

Poznámka:

Aby bylo možné plně podporovat přenos hodnot dat ze zdrojových objektů vazby na cíle vazby, musí každý objekt v kolekci, který podporuje vlastnosti svázatelné, implementovat vhodný mechanismus oznámení o změně vlastnosti, jako INotifyPropertyChanged je rozhraní.

Další informace naleznete v tématu Vazby k kolekcím v přehledu datových vazeb.

Poznámky k použití XAML

ObservableCollection<T> lze použít jako element objektu XAML ve Windows Presentation Foundation (WPF) ve verzích 3.0 a 3.5. Využití má ale podstatná omezení.

  • ObservableCollection<T> musí být kořenový prvek, protože x:TypeArguments atribut, který se musí použít k určení omezeného typu obecného ObservableCollection<T> , je podporován pouze u elementu object pro kořenový prvek.

  • Musíte deklarovat x:Class atribut (což znamená, že akce sestavení pro tento soubor XAML musí být Page nebo jiná akce sestavení, která kompiluje XAML).

  • ObservableCollection<T> je v oboru názvů a sestavení, které nejsou původně namapovány na výchozí obor názvů XML. Musíte namapovat předponu pro obor názvů a sestavení a pak tuto předponu použít u značky elementu objektu pro ObservableCollection<T>.

Jednodušší způsob použití ObservableCollection<T> schopností z XAML v aplikaci je deklarovat vlastní ne generickou třídu kolekce, která je odvozena od ObservableCollection<T>a omezuje ji na určitý typ. Pak namapujte sestavení, které obsahuje tuto třídu, a odkazujte na něj jako objektový prvek v XAML.